home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -serious- / programming / other / tandem / teaching / 36.asm < prev    next >
Assembly Source File  |  1999-09-06  |  3KB  |  97 lines

  1. * 36.asm      TLreqinput       version 0.01   8.6.99
  2.  
  3.  
  4.  include 'Front.i'         ;*** change to 'Tandem.i' to step thru TL's ***
  5.  
  6.  
  7. ; TLreqinput puts up a requester to allow the user to type in a number or
  8. ; string. The initial form of the string (the "prompt") is put in xxp_buff.
  9. ; TLReqinput adjusts the requester size to allow for the operative font.
  10.  
  11. ; The user edits the input box in the usual way. The user can then:
  12. ;   press <Return> or click <OK> to return the string as edited in the
  13. ;     buffer. Or, left Amiga with V
  14. ;   press <Esc> or click <Cancel> to indicate the desire to cancel.
  15. ;     Or, left Amiga with B
  16.  
  17. ; The non-typeable keys operate normally, and also:
  18. ;   Shift/Del deletes all chrs right of the cursor.
  19. ;   Shift/Backspace  deletes all chrs left of the cursor.
  20. ;   Ctrl/q  is an "undo" key. It reverses the effect of the previous
  21. ;     keystroke (even if it was Ctrl/q).
  22. ;   Ctrl/n  is a "new" key. It restores the prompt to whatever it
  23. ;     was when the requester first appeared.
  24. ;   Ctrl/x  erases all characters.
  25. ; If the user clicks the input box, Reqinput places the cursor where
  26. ;   it was clicked, if possible.
  27.  
  28.  
  29. strings: dc.b 0
  30. st_1: dc.b 'Test TLReqinput',0 ;1
  31.  dc.b 'This is a Reqinput requester',0 ;2
  32.  dc.b 'Edit this string',0 ;3
  33.  dc.b 'You chose to cancel',0 ;4
  34.  dc.b 'Error: the Requester was too big, or out of mem',0 ;5
  35. st_6: dc.b 'Times.font',0 ;6
  36.  dc.b 'Error: can''t load Times/24 font',0 ;7
  37.  dc.b 'Here is some help...',0 ;8
  38.  dc.b 0 ;9
  39.  dc.b '1. Brush your teeth regularly.',0 ;10
  40.  dc.b '2. Have a clean handkerchief.',0 ;11
  41.  dc.b 'Type your input string.',0 ;12
  42.  dc.b 'Then:',0 ;13
  43.  dc.b 'Press <Return> or click "OK"',0 ;14
  44.  dc.b 'Or, press <Esc> or click "Cancel"',0 ;15
  45.  
  46.  ds.w 0
  47.  
  48.  
  49. * program to demonstrate TLreqinput
  50. Program:
  51.  TLwindow #0,#0,#0,#300,#120,#640,#256,#0,#st_1
  52.  beq.s Pr_quit             ;go if can't
  53.  bsr Test                  ;do test of TLReqwindow
  54.  
  55. Pr_quit:
  56.  rts
  57.  
  58.  
  59. * test TLReqinput
  60. Test:
  61.  move.w #12,xxp_Help(a4)   ;help 4 lines from 12
  62.  move.w #4,xxp_Help+2(a4)
  63.  TLgetfont #st_6,#1,#24    ;font #1 = times/24
  64.  TLnewfont #1,#0,#1        ;use font #1, type plain, req windows
  65.  beq Te_bad1               ;go if can't open times/24
  66.  
  67.  TLstrbuf #3               ;prompt to buffer
  68.  TLreqinput #2,str,#30     ;header=string 2, type string,max 30 chrs
  69.  bne.s Te_ok               ;echo the input if ok
  70.  tst.l xxp_errn(a4)
  71.  beq.s Te_canc
  72.  bra.s Te_bad
  73.  
  74. Te_ok:
  75.  move.w #8,xxp_Help(a4)    ;ok - update help 4 lines from 8
  76.  move.w #4,xxp_Help+2(a4)
  77.  bra.s Te_rep              ;go report string as edited
  78.  
  79. Te_bad1:
  80.  moveq #7,d0               ;bad 1: str 7
  81.  bra.s Te_bad
  82.  
  83. Te_bad2:
  84.  moveq #5,d0               ;bad 2: str 5
  85.  bra.s Te_bad
  86.  
  87. Te_canc:
  88.  moveq #4,d0               ;canc: str 4
  89.  
  90. Te_bad:
  91.  TLstrbuf d0               ;put report in buff
  92.  
  93. Te_rep:
  94.  TLnewfont #0,#0,#1        ;Topaz/8 to req windows
  95.  TLreqchoose               ;report cancel/too big/can't load/ok
  96.  rts
  97.